package com.sunmnet.j2ee.service.powerdb.designer;

import com.sunmnet.j2ee.core.pub.QueryFilter;
import com.sunmnet.j2ee.entity.powerdb.designer.Database;
import com.sunmnet.j2ee.entity.powerdb.designer.DbConnInfo;
import com.sunmnet.j2ee.service.BaseService;

import java.util.List;
import java.util.Map;

/**
 * @author 蔡岳衡 on 2016/7/28.
 */
public interface DbConnInfoService extends BaseService<DbConnInfo, Long> {

    /**
     * 新增或修改时，检验连接名是否重复，若重复则保存失败
     *
     * @param dbConnInfo
     * @return 1:重复 0：不重复
     */
    int checkRepeat(DbConnInfo dbConnInfo);

    /**
     * 查询指定数据库关联的账户列表
     *
     * @param dbId
     * @return
     * @throws Exception
     */
    List getDbRelAccount(long dbId) throws Exception;

    /**
     * 根据数据库id找到指定数据库,给之添加可连接的账户列表
     *
     * @param dbId       选定的数据库id
     * @param accountIds 添加的账户可连接的数据库列表
     * @return 0:失败，1:成功
     */
    short saveDbRelateAccount(long dbId, String accountIds) throws Exception;

    /**
     * 根据数据库id找到指定数据库，取消和之连接的账户列表
     *
     * @param dbId       选定的账户id
     * @param accountIds 删除账户已连接的数据库列表
     * @return 0:失败，1:成功
     */
    short deleteDbRelateAccount(long dbId, String accountIds) throws Exception;

    /**
     * 定义查询数据库连接信息的接口
     */
    List<Map<String, Object>> getDbConnInfo(QueryFilter filter);

    /**
     * 更新连接信息 除了用户名和密码
     *
     * @param dbConnInfo
     * @return
     */
    int updateDbConnInfo(DbConnInfo dbConnInfo);

    /**
     * 更新连接信息密码
     *
     * @param id
     * @param password
     * @return
     */
    int updatePassword(long id, String password);
}
